/*
*编写程序将文件中的每一行存储在vector<string>容器对象中
*让后使用istringstream从vector中以每次读取一个单词的形式，兑取所存储的内容
*/
#include <iostream>
#include <sstream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
int toVector(string fileName,vector<string>& svec)
{
	//创建ifstream对象并绑定文件名
	ifstream ism(fileName.c_str());
	//检查文件是否成功打开
	if(!ism)
	{
		return 1;
	}

	//将文件中的字符串保存到vector对象中
	string sVal;
	while(getline(ism,sVal))
	{
		svec.push_back(sVal);
	}

	//关闭文件
	ism.close();

	//检查文件操作过程中可能发生的错误
	if(ism.eof())
	{
		return 0;
	}
	if(ism.bad())
	{
		return 2;
	}
	if(ism.fail())
	{
		return 3;
	}
}

int main()
 {
	vector<string> svec;
	string fileName,s;
	cout << "请输入文件名：";
	cin >> fileName;

	switch(toVector(fileName,svec))
	{
		case 1:
			cerr << "文件打开失败！" << endl;
			break;
		case 2:
			cerr << "发生系统级故障！" << endl;
			break;
		case 3:
			cerr << "读入数据失败！" << endl;
			break;
	}

	string strVal;
	istringstream ism;
	for(vector<string>::iterator iter = svec.begin();iter != svec.end();iter++)
	{
		//将当前元素复制给istringstream对象ism;
		ism.str(*iter);
		while(ism >> strVal)
		{
			cout << strVal << endl;
		}

		ism.clear();
	}

	system("pause");
	return 0;
}
